//
//  VisitorView.swift
//  MXWeiBo
//
//  Created by Apple on 16/2/24.
//  Copyright © 2016年 Applea. All rights reserved.
//

import UIKit
import SnapKit

//访客视图协议
protocol VisitorViewDelegate: NSObjectProtocol{

//    访客视图注册
    func visitorViewDidRegister()
//    访客视图登录
    func visitorViewDidLogin()
}


class VisitorView: UIView {
    
    
//    MARK ： 代理属性
   weak var delegate: VisitorViewDelegate?
//    MARK: 监听方法
    
    @objc private func clickRegisterButton() {

       print("注册1")
        delegate?.visitorViewDidRegister()
    }
    
    @objc private func clickLoginButton() {
    
        print("登录1")
        
        delegate?.visitorViewDidLogin()
    }
//  MARK --公共方法
//    设置访客视图信息
    func setupInfo(imageName: String? = nil, message: String){
    
        messageLabel.text = message
        
        guard let imageName = imageName else {
        
          statrAnimation()
            return
        }
        
        
//        不是首页需要隐藏房子
        homeIconView.hidden = true
        maskIconView.hidden = true
        iconView.image = UIImage(named: imageName)
        
    }
    
//    开始动画
    private func statrAnimation()
    {
      let  anim = CABasicAnimation(keyPath: "transform.rotation")
//       设置旋转角度
        anim.toValue = 2 * M_PI
//        不停转
        anim.repeatCount = MAXFLOAT
//        时间
        anim.duration = 20
//       对于需要循环播放的动画，可以设置此属性为 false
//        视图离开屏幕后，不会被销毁，当 动画所在视图被销毁后，动画会连带销毁，不考虑释放
        anim.removedOnCompletion = false
        
        iconView.layer.addAnimation(anim, forKey: nil)
        
    }

//    MARK ：－－私有属性
//    图标视图
    private lazy var iconView: UIImageView = UIImageView(mx_imageName: "visitordiscover_feed_image_smallicon")

//    遮罩视图
    private lazy var maskIconView: UIImageView = UIImageView(mx_imageName: "visitordiscover_feed_mask_smallicon")
//    小房子图标
    private lazy var homeIconView: UIImageView = UIImageView(mx_imageName: "visitordiscover_feed_image_house")
//    消息标签
    private lazy var messageLabel: UILabel = UILabel(
        text: "关注一些人，回这里看看有什么惊喜关注一些人，看坎坎坷坷坎坎坷坷",
        alignment: .Center)
    //    注册按钮
    private lazy var registerButton: UIButton = UIButton(title: "注册",
        backImageName: "common_button_white_disable")

//    登录按钮
    private lazy var loginButton: UIButton = UIButton(
        title: "登录",
        color: UIColor.blackColor(),
        backImageName: "common_button_white_disable")
    
   //    MARK:-- init
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupView()
        
//        添加监听方法
//        注册
        registerButton.addTarget(self, action: "clickRegisterButton", forControlEvents: .TouchUpInside)
//        登录
        loginButton.addTarget(self, action: "clickLoginButton", forControlEvents: .TouchUpInside)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    

//    MARK ：生命周期函数
}
//MARK:设置界面
extension VisitorView
{
  private func setupView()
  {
    
    
//    1.添加控件
    addSubview(iconView)
    addSubview(maskIconView)
    addSubview(homeIconView)
    addSubview(messageLabel)
    addSubview(registerButton)
    addSubview(loginButton)
   
////    2.自动布局
//    for v in subviews
//    {
//        v.translatesAutoresizingMaskIntoConstraints=false
//    }
    
//使用第三方框架 SnapKit 布局
    // top + left + bottom + right = Edges) }
    
    // width + height dimensions = Size) }
    
    // centerX + centerY positions = Center) }
    
    // top + left + bottom + right = Margins) }
    

    //    设置花圈
    iconView.snp_makeConstraints { (make) -> Void in
        make.centerX.equalTo(self)
        make.centerY.equalTo(self).offset(-60)
    }
//    设置小房子
    homeIconView.snp_makeConstraints { (make) -> Void in
        make.center.equalTo(iconView)
      
    }
//    设置提示文字
    messageLabel.snp_makeConstraints { (make) -> Void in
        make.centerX.equalTo(iconView)
        make.top.equalTo(iconView.snp_bottom).offset(20)
        make.size.equalTo(CGSize(width: 224, height: 36))
    }
//    设置注册按钮
    registerButton.snp_makeConstraints { (make) -> Void in
        make.top.equalTo(messageLabel.snp_bottom).offset(20)
        make.left.equalTo(messageLabel)
        make.size.equalTo(CGSize(width: 100, height: 36))
    }
//    设置登录按钮
    loginButton.snp_makeConstraints { (make) -> Void in
        make.top.equalTo(registerButton)
        make.right.equalTo(messageLabel)
        make.size.equalTo(registerButton)
    }
////    设置遮罩视图
//    maskIconView.snp_makeConstraints { (make) -> Void in
//        make.top.equalTo(self)
//        make.right.equalTo(self)
//        make.left.equalTo(self)
//        make.bottom.equalTo(registerButton.snp_bottom).offset(20)
//    }
//    空白区域可以使用背景色(能够使用颜色，就不要使用图片)
    backgroundColor = UIColor(white: 237.0 / 255.0, alpha: 1.0)
    }
      //    苹果原生布局
    private func setupViewForApple()
    {
        //    苹果原生布局
        //    使用布局是尽量参照一个控件布局，不要都是参照父视图，不然要改很多
        //    核心公式 :"view1.attr1 = view2.attr2 * multiplier + constant"
        //    一个视图.属性 ＝ 另一个视图. 属性 * 成积 + 约束值
        //    设置花圈
        //    self:设置约束，约束是添加到公共的共有控件
//        self.addConstraint(NSLayoutConstraint(item: iconView, attribute: .CenterX, relatedBy: .Equal, toItem: self, attribute: .CenterX, multiplier: 1.0, constant: 0))
//        self.addConstraint(NSLayoutConstraint(item: iconView, attribute: .CenterY, relatedBy: .Equal, toItem: self, attribute: .CenterY, multiplier: 1.0, constant: 0))
//        //    设置小房子
//        self.addConstraint(NSLayoutConstraint(item: homeIconView, attribute: .CenterX, relatedBy: .Equal, toItem: iconView, attribute: .CenterX, multiplier: 1.0, constant: 0))
//        self.addConstraint(NSLayoutConstraint(item: homeIconView, attribute: .CenterY, relatedBy: .Equal, toItem: iconView, attribute: .CenterY, multiplier: 1.0, constant: 0))
//        //    提示文字
//        self.addConstraint(NSLayoutConstraint(item: messageLabel, attribute: .CenterX, relatedBy: .Equal, toItem: iconView, attribute: .CenterX, multiplier: 1.0, constant: 0))
//        self.addConstraint(NSLayoutConstraint(item: messageLabel, attribute: .Top, relatedBy: .Equal, toItem: iconView, attribute: .Bottom, multiplier: 1.0, constant: 20))
//        //    指定宽度和高度，没有参照对象
//        self.addConstraint(NSLayoutConstraint(item: messageLabel, attribute: .Width, relatedBy: .Equal, toItem: nil , attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 224))
//        self.addConstraint(NSLayoutConstraint(item: messageLabel, attribute: .Height, relatedBy: .Equal, toItem: nil , attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 36))
    }
}